#pragma once
/* Copyright (C) 2009 Vlad Roubtsov. All rights reserved. */

#include <string>

#include <boost/ptr_container/ptr_vector.hpp>
using boost::ptr_vector;

#include "vr/deject/dependency_desc.hpp"
#include "vr/deject/types.hpp"
#include "vr/util/utility.hpp"

//----------------------------------------------------------------------------
namespace vr
{
namespace deject
{
class component_desc: noncopyable
{
    public: // ...............................................................

        const deject::component_id_type m_ID;
        const std::string m_implID;
        const ptr_vector<dependency_desc> m_deps; // TODO does this grab ownership


        component_desc (const deject::component_id_type & ID, const std::string & implID, const ptr_vector<dependency_desc> & deps) :
            m_ID (ID),
            m_implID (implID),
            m_deps (deps)
        {
        }

    private: // ..............................................................


}; // end of class
//............................................................................

typedef ptr_map<component_id_type, component_desc> cfg_type;

} // end of 'deject'
} // end of namespace
//----------------------------------------------------------------------------
